Designing a graphical user interface (“GUI”) using a graphical user interface layout systems can be complex. While some layout systems provide a visual tool for graphically constructing and configuring a GUI, the generation of a flexible design (e.g., that can cleanly handle window resize, orientation changes, zoom operations, etc.) may include writing large amounts of code. The code that provides said flexibility may define a variable size or position of an object within the GUI depending upon, amongst other things, a size/resize of the GUI window.
Tools, such as various “springs and struts” models, may define the location of an object with respect to an edge of the GUI window through the use of a controller (autoresizing mask). The autoresizing mask determined how the position or size of object's frame should change when the GUI window changed. Subsequent modifications to the content or layout, however, result in a need to rewrite code, replace springs and struts, and/or modify the values for springs and struts so as to maintain the intended layout, spatial relationships between objects, etc.
The position of objects included in the layout as defined by springs and struts also presents a difficulty in aligning the edge of each object with a pixel for various window sizes. Rounding values of the position/size of the frame for each object provides only a partial solution for pixel alignment. This rounding may also result in a GUI window with multiple objects that, while intended to be laid out in a uniform manner, are laid out in a non-uniform manner due to, e.g., inconsistencies between rounding up and rounding down for the various positions or sizes.